package sort.test3_30;

import java.util.Arrays;

public class CountSort1 {

    public  int[]  countSort(int[] nums){
        if (nums.length==0){
            return null;
        }
        int max = getMax(nums);
        int[]  countArray=new int[max+1];
        for (int i = 0; i < nums.length; i++) {
            countArray[nums[i]]++;
        }
        for (int i = 1; i <max+1 ; i++) {
            countArray[i]=countArray[i-1]+countArray[i];
        }
        int[]  resultArray= Arrays.copyOf(nums,nums.length);

        for (int i = 0; i < resultArray.length; i++) {

        //todo:不理解为什么这里的countArray数组的元素也会被改变　
            nums[--countArray[resultArray[i]]]=resultArray[i];

        }
        return  nums;
    }


//XXX:"SAHS "  FIXME + 说明
//    TODO:
//  CKG TODO:
//  CKG TODO 2023/3/30:
    public  int getMax(int[] nums){
        int max=Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]>max){
                max=nums[i];
            }
        }
        return  max;
    }


    public static void main(String[] args) {
        CountSort1 countSort1 = new CountSort1();
        int arr[] = {10,5,11,5};
        int[] ints = countSort1.countSort(arr);
        for (int a :
                ints) {
            System.out.println(a);

        }
    }




}
